/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package factoryTotal;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Shape;
import org.newdawn.slick.state.StateBasedGame;

/**
 *
 * @author wida46984148
 */
public abstract class Entidad {

    float pX;       //posicion X
    float pY;       //posicio y
    boolean destruido;
    Shape s;        //Cuadrado que representa la entidad

    public Entidad(){

    }

    /**
     * Updateja la entitat
     * @param delta
     */
    public abstract void update(int delta) throws SlickException ;
    //public abstract void update(int delta);

    /**
     * Dibuixa la entitat
     * @param gc GameContainer
     * @param g Graphics
     */
    public abstract void render(GameContainer gc, Graphics g);

    /**
     * Canvia la posició de la entitat
     * @param x coordendaX
     * @param y coordenadaY
     */
    public abstract void posicion(float x, float y);

    /**
     * Metode que comprova si la Shape d'aquesta entitat, col·lisiona amb una altre
     * @param s Shape UnitatEnemiga
     * @return true si col·lisiona
     */
    public boolean choque(Shape s) {
        if (this.s.intersects(s)) {
            return true;
        }
        return false;
    }

    /**
     * Getter destruido
     * @return
     */
    public boolean isMort() {
        return destruido;
    }

    /**
     * Setter destruido
     * @param destruido
     */
    public void setMort(boolean mort) {
        this.destruido = mort;
    }

    /**
     * Getter pX
     * @return Posx
     */
    public float getPosX() {
        return pX;
    }

    /**
     * Setter pY
     * @param pX
     */
    public void setPosX(float posX) {
        this.pX = posX;
    }

    /**
     * Getter pY
     * @return posy
     */
    public float getPosY() {
        return pY;
    }

    /**
     * Setter pY
     * @param pY
     */
    public void setPosY(float posY) {
        this.pY = posY;
    }

    /**
     * Getter Shape
     * @return s
     */
    public Shape getShape() {
        return s;
    }

    /**
     * Setter s
     * @param s
     */
    public void setShape(Shape shape) {
        this.s = shape;
    }

    /**
     * Getter Height
     * @return height
     */
    public float getHeight() {
        return s.getHeight();
    }

    /**
     * Getter width
     * @return width
     */
    public float getWidth() {
        return s.getWidth();
    }

}
